package com.whfc.emp.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppDeviceCardDataDTO;
import com.whfc.emp.dto.AppDeviceCardLogDTO;
import com.whfc.emp.dto.AppEmpGroupEmpDTO;
import com.whfc.emp.dto.AppHelmetDTO;
import com.whfc.emp.entity.AppDeviceCardLog;
import com.whfc.emp.param.AppEmpBroadcastParam;
import com.whfc.entity.dto.OssPathDTO;

import java.util.Date;
import java.util.List;

/**
 * @ClasssName AppHelmetService
 * @Description 安全帽相关接口
 * @Author hw
 * @Date 2021/1/4 11:50
 * @Version 1.0
 */
public interface AppHelmetService {

    /**
     * 查询安全帽硬件数据
     *
     * @param sn
     * @param startTime
     * @param endTime
     * @param pageNum
     * @param pageSize
     * @return
     * @throws BizException
     */
    PageData<AppDeviceCardLogDTO> getDeviceDataLog(String sn, Date startTime, Date endTime, Integer pageNum, Integer pageSize) throws BizException;

    /**
     * 查询安全帽数据
     *
     * @param deviceId
     * @return
     * @throws BizException
     */
    AppDeviceCardDataDTO getDeviceData(Integer deviceId) throws BizException;

    /**
     * 发送安全帽广播
     *
     * @param request 请求参数
     * @throws BizException
     */
    void broadcast(AppEmpBroadcastParam request) throws BizException;

    /**
     * 人员安全帽最新数据
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param corpId
     * @param groupId
     * @param keyword
     * @return
     */
    PageData<AppHelmetDTO> helmetLatest(Integer pageNum, Integer pageSize, Integer deptId, Integer corpId, Integer groupId, String keyword) throws BizException;

    /**
     * 获取安全帽历史数据
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param corpId
     * @param groupId
     * @param keyword
     * @param date
     * @return
     * @throws BizException
     */
    PageData<AppHelmetDTO> helmetLog(Integer pageNum, Integer pageSize, Integer deptId, Integer corpId, Integer groupId, String keyword, Date date) throws BizException;

    /**
     * 查询人员轨迹列表
     *
     * @param deptId
     * @param keyword
     * @return
     * @throws BizException
     */
    List<AppEmpGroupEmpDTO> helmetEmpList(Integer deptId, String keyword) throws BizException;

    /**
     * 安全帽最新数据导出
     *
     * @param deptId
     * @param corpId
     * @param groupId
     * @param keyword
     * @return
     * @throws BizException
     */
    OssPathDTO helmetLatestDataExport(Integer deptId, Integer corpId, Integer groupId, String keyword) throws BizException;

    /**
     * 安全帽历史数据导出
     *
     * @param deptId
     * @param corpId
     * @param groupId
     * @param keyword
     * @param date
     * @return
     * @throws BizException
     */
    OssPathDTO helmetLogDataExport(Integer deptId, Integer corpId, Integer groupId, String keyword, Date date) throws BizException;

    void checkWarn(AppDeviceCardLog log);

    String getToken();

    void test111(String type);

    void setHelmetData(String mockData);

    void refreshHelmetData();
}
